﻿using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Web;

namespace Elektronix.Class
{
    public class user
    {
        public int userID { get; set; }
        public string email { get; set; }
        public string parola { get; set; }
        public string  namesurname { get; set; }
        public string telefon  { get; set; }
        public string  faturaadresi { get; set; }
        public string  teslimatadresi { get; set; }
        public bool emaildurum { get; set; }
        public int yenisifredurum { get; set; }
        public int uyekayitdurum { get; set; }
        public int sehirID { get; set; }
        public int ulkeID { get; set; }

        public user()
        {

        }

        public user(int ID)
        {
            SqlConnection sqlcon = connection.baglanti;
            SqlCommand sqlcmd = new SqlCommand("select * from uyeler where userID=@userID ", sqlcon);
            sqlcmd.Parameters.AddWithValue("@userID", userID);
         

            sqlcon.Open();

            SqlDataReader sdr = sqlcmd.ExecuteReader();
            while (sdr.Read())
            {
                userID = Convert.ToInt32(sdr["userID"]);
                email = sdr["email"].ToString();
                namesurname = sdr["namesurname"].ToString();
                telefon = sdr["telefon"].ToString();
                faturaadresi = sdr["faturaadresi"].ToString();
                teslimatadresi = sdr["teslimatadresi"].ToString();
                sehirID = Convert.ToInt32(sdr["sehirID"]);
                ulkeID = Convert.ToInt32(sdr["ulkeID"]);
            }
            sqlcon.Close();
        }



        public void emailkontrol()
        {
            SqlConnection sqlcon = connection.baglanti;
            SqlCommand sqlcmd = new SqlCommand("select *  from  uyeler where email like @email ",sqlcon);
            sqlcmd.Parameters.AddWithValue("@email",email+"%");
            sqlcon.Open();

            SqlDataReader sdr = sqlcmd.ExecuteReader();
            while (sdr.Read())
            {
                emaildurum = true;
                sqlcon.Close();
                return;

            }

            emaildurum = false;
            sqlcon.Close();
        
        }

        public void uyeekle()
        {
            try
            {

           
            SqlConnection sqlcon = connection.baglanti;
            SqlCommand sqlcmd = new SqlCommand("insert into uyeler values(@email,@parola,@namesurname,@telefon,@faturaadresi,@teslimatadresi,@ulkeID,@sehirID)", sqlcon);
            sqlcmd.Parameters.AddWithValue("@email",email);
            sqlcmd.Parameters.AddWithValue("@parola",MD5Sifrele(parola));
            sqlcmd.Parameters.AddWithValue("@namesurname", namesurname);
            sqlcmd.Parameters.AddWithValue("@telefon", telefon);
            sqlcmd.Parameters.AddWithValue("@faturaadresi",faturaadresi);
            sqlcmd.Parameters.AddWithValue("@teslimatadresi",teslimatadresi);
            sqlcmd.Parameters.AddWithValue("@ulkeID", ulkeID);
            sqlcmd.Parameters.AddWithValue("@sehirID", sehirID);

            sqlcon.Open();

            sqlcmd.ExecuteNonQuery();

            sqlcon.Close();
            uyekayitdurum = 1;
                
            }
            catch (Exception)
            {

                uyekayitdurum = 0;
            }

        
        }


        public void login()
        {
            SqlConnection sqlcon = connection.baglanti;
            SqlCommand sqlcmd = new SqlCommand("select * from uyeler where email=@email and parola=@parola ",sqlcon);
            sqlcmd.Parameters.AddWithValue("@email",email);
            sqlcmd.Parameters.AddWithValue("@parola",MD5Sifrele(parola));

            sqlcon.Open();

            SqlDataReader sdr = sqlcmd.ExecuteReader();
            while (sdr.Read())
            {
                userID = Convert.ToInt32(sdr["userID"]);
                email = sdr["email"].ToString();
                namesurname = sdr["namesurname"].ToString();
                telefon = sdr["telefon"].ToString();
                faturaadresi = sdr["faturaadresi"].ToString();
                teslimatadresi = sdr["teslimatadresi"].ToString();
                sehirID = Convert.ToInt32(sdr["sehirID"]);
                ulkeID = Convert.ToInt32(sdr["ulkeID"]);
            }

            sqlcon.Close();




        }


        public void parolamiunuttum()
        {
            string yeniparola = MD5Sifrele(simetriksifre());
            try
            {
                SqlConnection sqlcon = connection.baglanti;
                SqlCommand sqlcmd = new SqlCommand("update uyeler set parola=@parola where email=@email", sqlcon);
                sqlcmd.Parameters.AddWithValue("@parola", yeniparola);
                sqlcon.Open();
                sqlcmd.ExecuteNonQuery();
                sqlcon.Close();
            }
            catch (Exception)
            {

                return;
            }
        
        
            mail m = new mail();
            m.mailadress = "info@nidoeuropes.org";
            m._mails = email;
            m.host = "mail.nidoeuropes.org";
            m.port = 26;
            m.login = "info@nidoeuropes.org";
            m.pass = "1nido1#";
            m.icerik = yeniparola;
            m.subject = "Parola Yenileme Islemi";
            m.mail_gonder();
            if (m.durum==1)
            {
                SqlConnection sqlcon = connection.baglanti;
                SqlCommand sqlcmd = new SqlCommand("insert into maillog values(DEFAULT,@gonderilen,@gonderen,@mailtipi,@date)",sqlcon);
                sqlcmd.Parameters.AddWithValue("@gonderilen",email);
                sqlcmd.Parameters.AddWithValue("@gonderen",m.mailadress);
                sqlcmd.Parameters.AddWithValue("@mailtipi","Parola Sifirlama");
                sqlcmd.Parameters.AddWithValue("@date",dateunit.sadecetarih());

                sqlcon.Open();

                sqlcmd.ExecuteNonQuery();

                sqlcon.Close();

            }

            yenisifredurum = m.durum;


        }


        public static string MD5Sifrele(string metin)
        {
            // MD5CryptoServiceProvider nesnenin yeni bir instance'sını oluşturalım.
            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();

            //Girilen veriyi bir byte dizisine dönüştürelim ve hash hesaplamasını yapalım.
            byte[] btr = Encoding.UTF8.GetBytes(metin);
            btr = md5.ComputeHash(btr);

            //byte'ları biriktirmek için yeni bir StringBuilder ve string oluşturalım.
            StringBuilder sb = new StringBuilder();


            //hash yapılmış her bir byte'ı dizi içinden alalım ve her birini hexadecimal string olarak formatlayalım.
            foreach (byte ba in btr)
            {
                sb.Append(ba.ToString("x2").ToLower());
            }

            //hexadecimal(onaltılık) stringi geri döndürelim.
            return sb.ToString();
        }


        public static string simetriksifre()
        {
            string parola = DateTime.Now.ToString();
            string yeniparola = "";

            for (int i = 0; i < parola.Length; i++)
            {
                char c = parola[i];
                int a = (int)c;
                a = a + i;
                c = (char)a;
                yeniparola += c;
            }
            return yeniparola;
        }












    }
}